precision mediump float;

uniform vec2 u_resolution;
uniform float u_time; // 用于控制旋转的时间变量
// 旋转函数
vec2 rotate(vec2 st, float angle) {
    float s = sin(angle);
    float c = cos(angle);
    return mat2(c, -s, s, c) * st;
}
float rectangleSDF(vec2 st, vec2 center, vec2 size) {
    // 在这里添加旋转
    st = rotate(st - center, u_time) + center;

    vec2 d = abs(st - center) - size * 0.5;
    return max(d.x, d.y);
}

void main() {
    // 将坐标映射到[0, 1]范围
    vec2 st = gl_FragCoord.xy / u_resolution;

    // 矩形中心坐标和大小
    vec2 rectCenter = vec2(0.5, 0.5);
    vec2 rectSize = vec2(0.3, 0.2);

    // 计算矩形的SDF值
    float sdf = rectangleSDF(st, rectCenter, rectSize);

    // 使用SDF值来定义颜色
    vec3 color = vec3(1.0, 0.0, 0.0); // 红色
    if (sdf < 0.0) {
        color = vec3(0.7961, 0.4902, 0.0941), 0.2863); // 绿色
    }

    // 输出颜色
    gl_FragColor = vec4(color, 1.0);
}


